﻿///////////////////////////////////////////////////////////////////////////////
// 文件名： GraphicsNode.hpp
// 作者：   671643387@qq.com
// 日期：   2015年11月1日 下午6:44:28
// 简介：   
///////////////////////////////////////////////////////////////////////////////

#if !defined(GRAPHICS_GRAPHICS_SCENENODE_GRAPHICSNODE_HPP_)
#define GRAPHICS_GRAPHICS_SCENENODE_GRAPHICSNODE_HPP_

#if defined(_MSC_VER) && (_MSC_VER >= 1200)
# pragma once
#endif

#include <vector>
#include <graphics/graphics/SceneNode.hpp>

namespace graphics
{
    namespace graphics
    {
        namespace scenenode
        {
            class GraphicsNode;
            typedef boost::shared_ptr<GraphicsNode> GraphicsNodePtr;

            class GraphicsNode : public ::graphics::graphics::SceneNode
            {
            public:
                GraphicsNode(void);
                virtual ~GraphicsNode(void);

            public:
                void SetScene(::graphics::graphics::Scene* scene);
                virtual ::graphics::graphics::Scene* GetScene(void) const;

                void AddChild(GraphicsNodePtr child);
                void RemoveChild(GraphicsNode* child);

                virtual void Render(void);

            public:
                typedef std::vector<GraphicsNodePtr> Children;

            private:
                void SetScene_(Children& children);

            private:
                Scene* scene_;
                Children children_;
            };
        }
    }
}

#endif //GRAPHICS_GRAPHICS_SCENENODE_GRAPHICSNODE_HPP_
